iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 17
1

當 contract 越寫越大、越寫越多時,我們會發現有很多重複的程式碼出現,如果我們每次在 function 裡面要使用到重複的程式碼時就要複製一份,那整個 contract 將會越來越肥大,降低可讀性。因此這邊要介紹 library 幫助我們把常用的 function & type 抽離出去成為一個 library 來使用。

本日合約:

pragma solidity ^0.4.25;

library Set {
    struct Data {
        mapping(int => bool) data;
    }
    
    function Insert(Data storage self, int key) public returns (bool) {
        if (self.data[key])
            return false; // Key exists.
        self.data[key] = true;
        return true;
    }
    
    function Remove(Data storage self, int key) public returns (bool) {
        if (!self.data[key])
            return false; // Key does not exist.
        self.data[key] = false;
        return true;
    }
    
    function Contain(Data storage self, int key) public view returns (bool) {
        return self.data[key];
    }
}

contract Main {
    Set.Data set;
    function insert(int key) public returns (bool) {
        return Set.Insert(set, key);
    }
    function remove(int key) public returns (bool) {
        return Set.Remove(set, key);
    }
    function contain(int key) public view returns (bool) {
        return Set.Contain(set, key);
    }
}

本日影片:
https://youtu.be/vmgevxf7vCo

Smart Contract 實戰教學播放清單:
https://www.youtube.com/playlist?list=PLHmOMPRfmOxSJcrlwyandWYiuP9ZAMYoF


上一篇
Interface
下一篇
SafeMath
系列文
Smart Contract 實戰教學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言